package com.yanyeori.framework.security.service;

import com.yanyeori.framework.core.model.WebResponse;
import com.yanyeori.framework.security.bo.UserDetail;

import java.util.*;

/**
 * 用户接口鉴权服务接口
 *
 * @author chenkuan 2021/3/12
 */
public interface PermissionsService {

    /**
     * 校验用户是否具有访问接口的权限
     *
     * @param userDetail  用户信息
     * @param servletPath 接口url
     */
    WebResponse<?> validUserInterfacePer(UserDetail userDetail, String servletPath);

    /**
     * 根据用户加载相关接口
     * return Map<String, Set<String>> Map<UserId, Set<interface_url>>
     */
    default Map<String, Set<String>> loadInterfacePermissionsByUser(String userId) {
        return new HashMap<>();
    }

    /**
     * 刷新所有匿名接口
     */
    default void flushAnnoInterfaces() {
        //default
    }

    /**
     * 查询所有匿名接口
     */
    default List<String> listAnnoInterfaces() {
        return new ArrayList<>();
    }
}
